/**
 * @description 自定义路由拦截
 */

import {
	getAuthorization,
	removeAuthorization
} from '@/utils/auth'

// 白名单
const whiteList = [
	'/', // 注意入口页必须直接写 '/'
	// { pattern: /^\/pages\/list.*/ }, // 支持正则表达式
	'/pages/login/login',
	'../register/register',
	'../tabBar/me/me',
	// { pattern: /^\/pages\/login\/*/ }
]

export default async function() {
	const list = ['navigateTo', 'redirectTo', 'reLaunch', 'switchTab']
	// 用遍历的方式分别为,uni.navigateTo,uni.redirectTo,uni.reLaunch,uni.switchTab这4个路由方法添加拦截器
	list.forEach(item => {
		uni.addInterceptor(item, {
			invoke(e) {
				if (!e.url) {
					uni.showToast({
						title: '请先登录',
						icon: 'none'
					})
					uni.redirectTo({
						url: "/pages/login/login",
						success: function(res) {
							uni.redirectTo({
								url: "/pages/login/login"
							})
						}
					})
					return false
				} 
				
				// 获取要跳转的页面路径（url去掉"?"和"?"后的参数）
				const url = e.url.split('?')[0]

				// 判断当前窗口是白名单，如果是则不重定向路由
				let pass
				if (whiteList) {
					pass = whiteList.some((item) => {
						if (typeof(item) === 'object' && item.pattern) {
							return item.pattern.test(url)
						}
						return url === item
					})
				}

				// 不是白名单并且没有token
				// console.log(pass)
				// console.log(getAuthorization())				
				if (!pass && getAuthorization() == '') {
					uni.showToast({
						title: '请先登录',
						icon: 'none'
					})
					uni.redirectTo({
						url: "/pages/login/login",
						success: function(res) {
							uni.redirectTo({
								url: "/pages/login/login"
							})
						}
					})
					return false
				} 
				// else if (!pass && getAuthorization() != '') {
				// 	let data = {
				// 		"user_id": JSON.parse(getAuthorization()).user_id, //账号（同手机号）
				// 		"token": JSON.parse(getAuthorization()).token, //本地token
				// 		"api_key": getApp().globalData.api_key
				// 	}
				// 	uni.request({
				// 		url: getApp().globalData.serverUrl + '/api/login/checktoken',
				// 		data: JSON.stringify(data),
				// 		method: 'POST',
				// 		contentType: 'application/json',
				// 		complete: (res) => {
				// 			if (res.data.code == '0000') {
				// 				uni.showToast({
				// 					title: 'token过期，请重新登陆',
				// 					icon: 'none'
				// 				})
				// 				removeAuthorization()
				// 				uni.redirectTo({
				// 					url: "/pages/login/login",
				// 					success: function(res) {
				// 						uni.redirectTo({
				// 							url: "/pages/login/login"
				// 						})
				// 					}
				// 				})
				// 				return false
				// 			}
				// 		},
				// 	})
				// }
				return e
			},
			fail(err) { // 失败回调拦截
				console.log(err)
			}
		})
	})
}
